<!--
 * @Author: wanggang
 * @Date: 2019-08-19 11:23:11
 * @Description: 
 -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    
</body>
<script>

    // 原始数据类型
var arr=[
    {id:"45545",text:"管理"},
    {id:"4556545",text:"预览"},
    {id:"455455",text:"无权限"},
     {id:"45545",text:"也是管理"}
];

// 获取的数据类型
// [{
//     id:'45545',
//     value:2
// },
// {
//     id: '4556545',
//     value:1
// }]
/**
 * 获取统计数据方法
 * 1.判断对象中是否存在该属性，没有的添加，返回结果中添加需要的对象信息
 * 2.对于对象中有属性的数据，将返回结果中的数据的值累加
 * 
*/
        var obj = {};
        arr = arr.reduce(function(item, next) {
            if(!obj[next.id]){
                        //
                        item.push({id:next.id,value:1});
                        obj[next.id]=true
            }else{
                //  方法1： foreach循环之前的数组比较
                // item.forEach(element => {
                //     if(element.id === next.id){
                //         element.value+=1;
                //     }
                // })
                // 方法2： 数组的find方法
                item.find(x=>{
                    return x.id===next.id;
                }).value+=1
            }
            return item;
        }, []);
    console.log(arr);
    
</script>
</html>